// pages/dashboard/dashboard.js
const { getUserInfo } = require('../../api/auth')
const { getUsers } = require('../../api/user')
const { getSuppliers } = require('../../api/supplier')
const { getOperationLogs } = require('../../api/log')
const { getDashboardStats } = require('../../api/dashboard')
const { formatTime, showError, showLoading, hideLoading, navigateTo, getStatusClass } = require('../../utils/util')

const app = getApp()

Page({
  data: {
    userInfo: {},
    stats: {
      supplierCount: 0,
      userCount: 0,
      fileCount: 0,
      logCount: 0
    },
    recentLogs: [],
    refreshing: false
  },

  onLoad() {
    console.log('仪表盘页面加载')
    this.checkLoginStatus()
  },

  onShow() {
    if (app.globalData.isLogin) {
      this.loadData()
    }
  },

  // 下拉刷新
  onPullDownRefresh() {
    this.loadData().finally(() => {
      wx.stopPullDownRefresh()
    })
  },

  // 检查登录状态
  checkLoginStatus() {
    if (!app.globalData.isLogin) {
      wx.redirectTo({
        url: '/pages/login/login'
      })
      return
    }
    
    this.setData({
      userInfo: app.globalData.userInfo || {}
    })
  },

  // 加载数据
  async loadData() {
    try {
      showLoading('加载中...')
      
      // 并行加载数据
      const promises = [
        this.loadUserInfo(),
        this.loadStats(),
        this.loadRecentLogs()
      ]
      
      await Promise.allSettled(promises)
      
    } catch (error) {
      console.error('加载数据失败:', error)
      showError('数据加载失败')
    } finally {
      hideLoading()
    }
  },

  // 加载用户信息
  async loadUserInfo() {
    try {
      const userInfo = await getUserInfo()
      this.setData({ userInfo })
      
      // 更新全局用户信息
      app.globalData.userInfo = userInfo
      wx.setStorageSync('userInfo', userInfo)
      
    } catch (error) {
      console.error('获取用户信息失败:', error)
    }
  },

  // 加载统计数据
  async loadStats() {
    try {
      const data = await getDashboardStats()
      const stats = {
        supplierCount: data.supplierCount || 0,
        userCount: data.userCount || 0,
        fileCount: 0,
        logCount: data.todayLogCount || 0
      }
      this.setData({ stats })
    } catch (error) {
      console.error('获取统计数据失败:', error)
    }
  },

  // 加载最近操作日志
  async loadRecentLogs() {
    try {
      const result = await getOperationLogs({ page: 1, size: 5 })
      const recentLogs = result.content || result.records || []
      
      this.setData({ recentLogs })
      
    } catch (error) {
      console.error('获取操作日志失败:', error)
    }
  },

  // 刷新数据
  async onRefresh() {
    if (this.data.refreshing) return
    
    this.setData({ refreshing: true })
    
    try {
      await this.loadData()
    } finally {
      this.setData({ refreshing: false })
    }
  },

  // 点击供应商统计
  onTapSupplierStats() {
    navigateTo('/pages/supplier/list/list')
  },

  // 点击用户统计
  onTapUserStats() {
    navigateTo('/pages/user/list/list')
  },

  // 点击文件统计
  onTapFileStats() {
    // 如果有文件管理页面，可以跳转
    wx.showToast({
      title: '功能开发中',
      icon: 'none'
    })
  },

  // 点击日志统计
  onTapLogStats() {
    navigateTo('/pages/logs/logs')
  },

  // 新增供应商
  onTapAddSupplier() {
    navigateTo('/pages/supplier/form/form')
  },

  // 新增用户
  onTapAddUser() {
    navigateTo('/pages/user/form/form')
  },

  // 文件管理
  onTapFileManage() {
    wx.showToast({
      title: '功能开发中',
      icon: 'none'
    })
  },

  // 系统日志
  onTapSystemLogs() {
    navigateTo('/pages/logs/logs')
  },

  // 格式化时间
  formatTime,
  
  // 获取状态样式类
  getStatusClass
})